//
//  CZBaseTableViewController.swift
//  iOSWeibo10
//
//  Created by itcast on 16/5/10.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit

/// 根据用户使用登录显示不同的界面(1.tableView 2.显示自定义的访客视图)
class CZBaseTableViewController: UITableViewController {

    var userLogin: Bool = CZUserAccountViewModel.sharedInstance.isUserLogin
    
    override func loadView() {
        if userLogin {
            // 显示按照正常的流程(tableView)
            super.loadView()
        } else {
            // 用户没有登录(自己搞一个界面)
            view = visitorView
            
            // 5.设置控制器成为visitorView的代理
            visitorView.delegate = self
            
            // 根据不同的控制器设置不同的访客视图内容, 我们创建的都是子类self是子类的类型
//            print("self: \(self)")
            // is: 判断一个对象是否是指定类型
            if self is CZHomeViewController {
                visitorView.startRotationAnimation()
            } else if self is CZMessageViewController {
                visitorView.setupVisitorInfo("visitordiscover_image_message", message: "登录后，别人评论你的微博，发给你的消息，都会在这里收到通知")
            } else if self is CZDiscoveryViewController {
                visitorView.setupVisitorInfo("visitordiscover_image_message", message: "登录后，最新、最热微博尽在掌握，不再会与实事潮流擦肩而过")
            } else if self is CZProfileViewController {
                visitorView.setupVisitorInfo("visitordiscover_image_profile", message: "登录后，你的微博、相册、个人资料会显示在这里，展示给别人")
            }
            
            // 设置导航栏按钮
            // 导航栏上面显示的内容不是导航控制器决定的,是根据导航控制器正在显示的子控制器来确定的
            self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "注册", style: UIBarButtonItemStyle.Plain, target: self, action: "visitorViewDidClickRegister")
            self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "登录", style: UIBarButtonItemStyle.Plain, target: self, action: "visitorViewDidClickLogin")
        }
    }
    
    // MARK: - 懒加载
    /// 访客视图
    /// private 私有,除了这个文件外,别人不知道有这个属性或方法,和OC里面将属性或方法定义在.m里面一样
    lazy var visitorView: CZVisitorView = CZVisitorView()   // [[CZVisitorView alloc] init] -> initWithFrame:
}

// MARK: - 扩展
// 扩展对象实现协议: 可以将一个协议对应的代码写在一起
// 6.控制器遵守CZVisitorViewDelegate协议
extension CZBaseTableViewController: CZVisitorViewDelegate {
    // MARK: - 代理方法
    // 7.实现协议的方法
    func visitorViewDidClickRegister() {
        print(__FUNCTION__)
    }
    
    func visitorViewDidClickLogin() {
        // Modal出授权控制器
        let oauthVC = CZOauthViewController()
        
        let nav = UINavigationController(rootViewController: oauthVC)
        self.presentViewController(nav, animated: true, completion: nil)
    }
}
